import {createServer} from 'http';
const PORT = process.env.PORT;

const users = [
    {id:1, name:"张三"},
    {id:2, name:"李四"},
    {id:3, name:"王五"}
];

const logger = (req,res,next) => {
    console.log('${req.method} ${req.url}');
    next();
};

const jsonMiddleware = (req, res, next)=> {

    res.setHeader('Content-Type','application/json;charset=utf-8');
    next();
}

const getUsersHandler = (req,res)=>{
    res.write(JSON.stringify(users));
    res.end();
};

const getUserHandler=(req,res)=>{
        const id = req.url.split('/')[3];
        const user = users.find(user => user.id == id);

        if(user){
            res.write(JSON.stringify(user));
        }else{
            res.statusCode=404;
            res.write(JSON.stringify({message:'用户不存在'}));
        }
        res.end();
    };

    const notFoundHandler = (req,res)=>{
        res.statusCode=404;
        res.write(JSON.stringify({message:'API不存在'}));
        res.end();
    };

    const createUserHandler = (req,res)=>{
        let body = '';
        req.on('data',(chunk)=>{
            body += chunk.toString();
        });
        req.on('end',()=>{
            const user = JSON.parse(body);
            user.push(user);
            res.responseCode = 201;
            res.write(JSON.stringify(user));
            res.end();
        });
    };



    const server = createServer((req,res)=>{
        logger(req,res,()=>{
            jsonMiddleware(req,res,() =>{
                if(req.url === 'api/users'&& req.method ==='GET') {
                    getUsersHandler(req,res);
                }else if(req.url.startsWith('/api/users/')&& req.method=== 'GET'){
                    getUsersHandler(req,res);
                }else if(req.url === 'api/users'&&req.method==='POST'){
                    createServer(req,res);
                }else{
                    notFoundHandler(req,res);
                }
            })
        })

    });

server.listen(PORT,()=>{
    console.log("服务器已启动，监听端口${PORT}");
});